package com.ruoyi.web.controller.common;

import lombok.Data;
import org.springframework.stereotype.Component;

@Component
@Data
public class Result<T> {
    private boolean success;
    private String msg;
//    private int retCode;
    private T data;

    public Result(T data) {
//        this.retCode = 200;
        this.success = true;
        this.msg = "成功";
        this.data = data;
    }

    public Result() {
        this.success = true;
        this.msg = "成功";
    }
    public Result(String msg) {
        this.success = false;
        this.msg = msg;
    }

    /**
     * 成功时候的调用
     *
     * @return
     */
    public <T> Result<T> success(T data) {
        return new Result<T>(data);
    }

    /**
     * 成功，不需要传入参数
     *
     * @return
     */
    @SuppressWarnings("unchecked")
    public <T> Result<T> success() {
        return (Result<T>) success("");
    }

    /**
     * 失败时候的调用
     *
     * @return
     */
    public <T> Result<T> error(String msg) {
        return new Result<T>(msg);
    }

//    /**
//     * 失败时候的调用,扩展消息参数
//     *
//     * @param cm
//     * @param msg
//     * @return
//     */
//    public static <T> Result<T> error(CodeMsg cm, String msg) {
//        CodeMsg newCodeMsg = null;
//        try {
//            newCodeMsg = (CodeMsg) cm.clone();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        newCodeMsg.setmsg(cm.getmsg() + "--" + msg);
//        return new Result<T>(newCodeMsg);
//    }

    public T getData() {
        return data;
    }

    public String getmsg() {
        return msg;
    }

//    public int getRetCode() {
//        return retCode;
//    }


}
//public class Result {
//    private boolean success;
//    private String msg;
//    private String reult;
//
//    public Result() {
//        this.success = true;
//        this.msg = "成功";
//    }
//
//    public Result(String msg) {
//        this.success = false;
//        this.msg = msg;
//    }
//    public Result(String reult, String msg) {
//        this.success = true;
//        this.reult = reult;
//        this.msg = "成功";
//    }
//}
